#include <iostream> 
#include <string> 
#include <cctype> 
#include <map> 
#include <list>
#include <set>
#include <cstdio>

using namespace std;

map<char, char> m;

void mapTo()
{
	m.insert(pair<char, char>('A', '2'));
	m.insert(pair<char, char>('B', '2'));
	m.insert(pair<char, char>('C', '2'));
	m.insert(pair<char, char>('D', '3'));
	m.insert(pair<char, char>('E', '3'));
	m.insert(pair<char, char>('F', '3'));
	m.insert(pair<char, char>('G', '4'));
	m.insert(pair<char, char>('H', '4'));
	m.insert(pair<char, char>('I', '4'));
	m.insert(pair<char, char>('J', '5'));
	m.insert(pair<char, char>('K', '5'));
	m.insert(pair<char, char>('L', '5'));
	m.insert(pair<char, char>('M', '6'));
	m.insert(pair<char, char>('N', '6'));
	m.insert(pair<char, char>('O', '6'));
	m.insert(pair<char, char>('P', '7'));
	m.insert(pair<char, char>('R', '7'));
	m.insert(pair<char, char>('S', '7'));
	m.insert(pair<char, char>('V', '8'));
	m.insert(pair<char, char>('U', '8'));
	m.insert(pair<char, char>('T', '8'));
	m.insert(pair<char, char>('Y', '9'));
	m.insert(pair<char, char>('X', '9'));
	m.insert(pair<char, char>('W', '9'));
}

int toInt(string s)
{
	int res = 0;
	for(int i = 0; i < s.size(); i++)
	{
		if(isalpha(s[i]))
			s[i] = m[s[i]];
		if(isdigit(s[i])) 
		{
			res *= 10;
			res += s[i] - '0';
		}
	}

	return res;
}

int main()
{
	mapTo();
	string s;
	list<int> listAll;
	set<int> setAll;
	map<int, int> p;
	int n;
	cin>>n;
	for(int i = 0; i < n; i++)
	{
		cin>>s;
		int num = toInt(s);
		if(setAll.find(num) == setAll.end())
		{
			setAll.insert(num);
			listAll.push_back(num);
			p.insert(pair<int, int>(num, 1));
		}
		else
		{
			p[num]++;
		}
	}

	listAll.sort();
	list<int>::iterator  listIter;

	int flag = 0;
	for(listIter = listAll.begin(); listIter != listAll.end(); listIter++)
	{
		if(p[*listIter] > 1)
		{
			printf("%03d-%04d %d\n", *listIter / 10000, *listIter % 10000, p[*listIter]);
			flag = 1;
		}
	}
	if(flag == 0) 
		cout<<"No duplicates."<<endl; return 0; 
}
